perm filename NORMAL.SAI[11,ALS] blob sn#060626 filedate 1973-09-03 generic text, type T, neo UTF8
00010	BEGIN "NORMAL"
00020	DEFINE ⊂="COMMENT";  ⊂ 9/1/73 NORMALLIXES INPUT DATA;
00030	DEFINE CR="'15",LF="'12",CRLF="CR&LF",TB="'11";
00040	
00050	INTEGER ARRAY INDATA[0:511];
00060	INTEGER ARRAY LFILE[0:'177];
00070	INTEGER ARRAY SUMS[0:23,0:63];
00080	INTEGER I,J,K,L,M,N,P,SEGC,SEGTOT,BRK,EOF,EOFA,BPT,RL;
00090	INTEGER CHAN1,CHAN2, CHAN3,CHAN4,CHAN5,CHAN6;
00100	STRING READ1,FILEI,FILEL,FILLST;
00110	BOOLEAN ER;
00120	
00130	STDBRK(1);
00140	SETBREAK(14,"∃",NULL,"INS");
00150	
00160	OUTSTR("This program computes a table that can be used to normallie "&crlf
00170	 &"the input data for maximum possible resolution in 16 buckets."&crlf);
00180	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
00190	OUTSTR("Data file list (LIST28) = "); FILEL←INCHWL;
00200	IF FILEL="" THEN FILEL←"LIST28";
00210	CLOSE(CHAN5); OPEN(CHAN5,"DSK",1,2,0,3500,BRK,EOFA);
00220	LOOKUP(CHAN5,FILEL,ER);
00230	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&" File = ");
00240	LOOKUP(CHAN5,FILEL←INCHWL,ER); END;  EOFA←0;
00250	FILLST←INPUT(CHAN5,14); EOFA←0; RL←0;
00260	WHILE EOFA=0 DO BEGIN "LISTREAD"
00270	FILEI←SCAN(FILLST,1,J); IF FILEI="" THEN DONE;
00280	
00290	CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
00300	LOOKUP(CHAN4,FILEI,ER);
00310	 IF EOF≠0 THEN DONE;
00320	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
00330	SEGTOT←(LFILE[0]*6)%256;  SEGC←0;
00340	OUTSTR(FILEI&" "&CVS(SEGTOT)&" seg. ");
00350	
00360	WHILE TRUE DO BEGIN
00370	ARRYIN(CHAN4,INDATA[0],512);
00380	BPT←POINT(6,INDATA[0],-1);
00390	FOR I←0 STEP 1 UNTIL 127 DO BEGIN
00400	  SEGC←SEGC+1; IF SEGC>SEGTOT THEN DONE;
00410	  FOR P←0 STEP 1 UNTIL 23 DO BEGIN
00420	    J←ILDB(BPT);
00430	    SUMS[P,J]←SUMS[P,J]+64; END;
00440	  END;
00450	IF SEGC>SEGTOT THEN DONE;
00460	END;
00470	
00480	IF RL=0 THEN RL←1 ELSE BEGIN RL←0; OUTSTR(CRLF); END;
00490	IF EOFA≠0 THEN DONE;
00500	END "LISTREAD";
00510	
00520	FOR P←0 STEP 1 UNTIL 23 DO BEGIN
00530	  N←0;
00540	  FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00550	    SUMS[P,J]←SUMS[P,J] LAND '777777777700;
00560	    N←N+SUMS[P,J]; END;
00570	  IF P=0 THEN OUTSTR(CRLF&"Samples analysed = "&CVS (N LSH -6)&CRLF);
00580	  IF SUMS[P,0]>N LSH -4 THEN BEGIN
00590	    N←(N-SUMS[P,0])%60; M←0; K←4; END ELSE BEGIN
00600	    N←N LSH -6; M←SUMS[P,0]-N; K←1; END;
00610	
00620	  FOR J←1 STEP 1 UNTIL 63 DO BEGIN
00630	    M←M+SUMS[P,J];    SUMS[P,J]←SUMS[P,J]+K;
00640	    FOR I←0 STEP 1 UNTIL 3 DO BEGIN 
00650	      IF M<N THEN DONE; IF K<63 THEN K←K+1;  M←M-N; END;
00660	    END;
00670	END;
00680	
00690	SETFORMAT(3,0);
00700	
00710	FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00720	  FOR J←0 STEP 1 UNTIL 23 DO 
00730	    OUTSTR(CVS(SUMS[J,I] LAND '77));
00740	    OUTSTR(CRLF); END;
00750	
00760	OPEN(CHAN1,"DSK",'10,0,10,0,0,EOF);
00770	ENTER(CHAN1,"NORMAL.DAT",0);
00780	ARRYOUT(CHAN1,SUMS[0,0],1536);
00790	CLOSE(CHAN1);
00800	OUTSTR(CRLF&"File NORMAL.DAT has been written."&CRLF);
00810	RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN6);
00820	
00830	END "NORMAL";